﻿using System;
using System.Collections.Generic;
using System.Data.Objects;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Quaack
{
    public partial class SMSListener : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string telnr = Request["phonenr"];
            string smsBericht = Request["message"];

            try
            {
                string aanhef = smsBericht.Substring(0, 2);
                if (aanhef == "Q ")
                {
                    if (smsBericht.Length > 2)
                    {
                        string bericht = smsBericht.Remove(0, 2);
                        //check of het telefoonnummer in de database voorkomt en de bijbehorende gebruiker niet is geblokkeerd
                        SqlConnection sqlConn = new SqlConnection(
                        "Data Source=.\\sqlexpress;Initial Catalog=Quaack;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
                        SqlCommand GetUserID = new SqlCommand("SELECT profileid from profile where mobilenumber = '" + telnr + "' and permblocked = 0", sqlConn);
//                        SqlCommand GetUserID = new SqlCommand("SELECT profileid from profile where mobilenumber = '" + telnr + "'", sqlConn);

                        //open database, haal de userID en indien deze bestaat kan het bericht worden opgeslagen in de database
                        sqlConn.Open();
                        object sqlObject = GetUserID.ExecuteScalar();

                        if (sqlObject != null)
                        {
                            // userID zal uiteindelijk gebruikt worden om de sender aan te geven in de message tabel
                            int userID = Convert.ToInt32(sqlObject.ToString());
                            DateTime posttimemessage = DateTime.Now;
                            int removed = 0;
                            SqlCommand plaatsBericht = new SqlCommand("Insert into message(messdatetime, sender, message, removed) values (@messdatetime, @sender, @message, @removed)", sqlConn);

                            plaatsBericht.Parameters.AddWithValue("@messdatetime", posttimemessage);
                            plaatsBericht.Parameters.AddWithValue("@sender", userID);
                            plaatsBericht.Parameters.AddWithValue("@message", bericht);
                            plaatsBericht.Parameters.AddWithValue("@removed", removed);

                            //                        sqlConn.Open();
                            plaatsBericht.ExecuteNonQuery();
                            //                        sqlConn.Close();
                        }
                        sqlConn.Close();
                    }
                }
            }
            catch (NullReferenceException)
            {
                // Bericht mag genegeerd worden ls het niet aan formaat voldoet
            }
        }
    }
}